import { ComponentInfoType, ComponentsStateType } from './index'

/**
 * 获取下一个选中的组件id
 * @param fe_id 当前要删除的组件的id
 * @param componentsList 组件列表
 * @returns
 */
export function getNextSelectedId(fe_id: string, componentsList: ComponentInfoType[]) {
    const visibleComponentList = componentsList.filter(c => !c.isHidden)
    const index = visibleComponentList.findIndex(c => c.fe_id === fe_id)
    if (index < 0) return ''
    //   重新计算
    let newSelectId = ''
    const len = visibleComponentList.length
    if (len <= 1) {
        newSelectId = ''
    } else {
        // 组件长度大于
        if (index + 1 == len) {
            // 删除最后一个，选中上一个组件
            newSelectId = visibleComponentList[index - 1].fe_id
        } else {
            // 删除的不是最后一个，选中当前删除组件的下一个
            newSelectId = visibleComponentList[index + 1].fe_id
        }
    }
    console.log('newSelectId', newSelectId)
    return newSelectId
}

/**
 *  向画布中添加新的组件
 * @param stateDraft redux store的数据
 * @param newCmp 即将插入的新组件
 * @returns
 */
export function insertNewComponent(stateDraft: ComponentsStateType, newCmp: ComponentInfoType) {
    const { selectedId, componentsList } = stateDraft
    const selectedIdIndex = componentsList.findIndex(c => c.fe_id === selectedId) || 0
    if (selectedIdIndex < 0) {
        // 未选中
        stateDraft.componentsList.push(newCmp)
    } else {
        // 选中
        stateDraft.componentsList.splice(selectedIdIndex + 1, 0, newCmp)
    }
    stateDraft.selectedId = newCmp.fe_id
}
